class Solution {
    public boolean isNumber(String s) {
        s = s.trim();
        if(s.length() == 0) return false;
        StringBuilder sb = new StringBuilder();
        boolean flg = true;
        for(int i = 0; i < s.length();i++){
            if(s.charAt(i) != 'e' && s.charAt(i) != 'E'){
                sb.append(s.charAt(i));
            }else{
                flg = false;
                if(isdecimal(sb)){
                    sb = new StringBuilder();
                    continue;
                }else{
                    return false;
                }
            }
        }
        if(!flg && isdecimal(sb)){
            return true;
        }
        if(flg && (sb.length()==0 || isdecimal(sb))){
            return true;
        }else{
            return false;
        }
    }
    public boolean isdecimal(StringBuilder s) {
        if(s.length() == 0) return false;
        int i = 0;
        if(s.charAt(0) == '+' || s.charAt(0) == '-'){
            i++;
        }
        boolean flg = true;
        boolean tmp = true;
        while(i < s.length()) {
            if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){
                tmp = false;
                i++;
            }else if(flg && s.charAt(i) == '.') {
                flg = false;
                i++;
            }else{
                return false;
            }
        }
        if(tmp){
            return false;
        }
        return true;
    }
    // public boolean isInteger(StringBuilder s) {
    //     if(s.length() == 0) return false;
    //     int i = 0;
    //     if(s.charAt(0) == '+' || s.charAt(0) == '-'){
    //         i++;
    //     }
    //     while(i < s.length()) {
    //         if(!Character.isDigit(s.charAt(i))){
    //             return false;
    //         }
    //         i++;
    //     }
    //     return true;
    // }
}
public class Test {
    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.isNumber("3");
    }
}
